<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>数字</title>
</head>
<body>


<div id="divText">
    数字及其API
</div>


<script>


    //mark  这连个不是数字类型, 而是 数字对象类型 , 类似于 java  的Integer 而不是 int
    var x = new Number(500);
    var y = new Number(500);
    console.log(" x === y  ", x === y);


    /*
     * 在 JavaScript 中，所有数字都以 64 位浮点格式（IEEE 754 标准）存储。 大整数无法被精确表示，会被四舍五入。
     *    因此，js 只能安全地表示以下范围内的整数：
     *    最大为 9007199254740991（2^53-1）
     *    最小为 -9007199254740991（-(2^53-1)）
     * */
    x = 999999999999999;
    y = 9999999999999999;

    console.log('x + y ==> ', x + y);


    /*
    * BigInt：一种新的 JavaScript 数据类型 BigInt 的 JavaScript 类型是 "bigint"
    * 可以在整数末尾添加 n，或调用 BigInt() 函数
    * 注意: 不允许在 BigInt 和 Number 之间进行算术运算（类型转换会丢失信息）。
    * BigInt 无法进行无符号右移操作（>>>），因为它没有固定的宽度。
    * BigInt 不能有小数。
    * */
    x = 9999999999999999;
    console.log( ' x ==> '  ,  x  );
    x = 9999999999999999n;
    console.log( 'bigint  x ==> '  ,  x  );


    x = BigInt(1234567890123456789012345);
    console.log( 'bigint  x ==> '  ,  x  );
    console.log( 'typeof x ==> '  ,  typeof x  );



    /*
     *最小和最大安全整数
     * 类似 java  的 Integer.MAX_VALUE
     * */
    console.log( ' Number.MAX_SAFE_INTEGER ==> '  ,    Number.MAX_SAFE_INTEGER );
    console.log( '  Number.MIN_SAFE_INTEGER; ==> '  ,  Number.MIN_SAFE_INTEGER );



    console.log(  typeof  Number );   //  mark Number 是一个函数对象 , 不是普通对象
    console.log(   Number );
    var  num = new Number(1);      // 这个 num 是Number函数生成出来的 一个 object  有一些属性,  但是和 Number 完全不是一回事
    console.log(  typeof  num );
    console.log(   num );








</script>


</body>
</html>
